下班之后,差评君习惯刷刷平时加的几个技术群,看看近期有什么瓜可以吃。
突然发现有一条提醒。。嗯,点开看看。
这段话大概意思就是,Facebook 会在用户下载照片时,嵌入一段非常隐蔽的追踪代码,即使用户下载图片通过其他平台传播,Facebook 依旧可以通过这段代码,追查到图片的第一个转发者。
美国的《 福布斯新闻网 》推测,这种的追踪代码如果使用的好的话,Facebook 可以根据一张照片流传的轨迹,刻画出用户的网络活动轨迹:常联系的朋友、常逛的论坛、活跃的时间段等等。
如果这是真的话,那可就恐怖了。。
因隐私问题出席听证会的扎克伯格
Facebook 最近的名声已经很不好了,小扎自己谈起隐私也只能尴尬一笑,这时候又爆出追踪图片的事情…… 差评君在看到这个消息之后,想到了两件事情:
1. 这件事情是真是假,需要验证一下;
2. 国内的几家主流平台会不会也有类似的追踪代码。
差评君首先来验证下, Facebook 会在你下载图片的时候植入追踪代码是否为真。。那么,差评君必须先往自己的账号上上传一张照片。。
就这个了,锅哥不羁的身影!
然后,差评君再把锅哥图片下载下来,在 Facebook 上这么转了一圈,按理说,这张图片上就有了 Facebook 植入的小尾巴了~
据推文的发布者所述,这段追踪代码可以在十六进制查看器下观察到。
能够查看图片的十六进制编码的工具有很多,差评君这次使用的是 VS Code 内的十六进制查看插件「 hexdump for VSCode 」。
VS Code 是程序猿们的代码编写工具
之后我们在 VS Code 内打开图片文件,会发现界面右上角新增加了一个「Show Hexdump」(显示十六进制编码),点击后就会将文件转换为十六进制进行显示。
眨眼间火锅就变成了一串数字
接下来多图预警!
接下来多图预警!
接下来多图预警!
我们先来看一下原始照片的十六进制信息↓↓
原始图片在十六进制下能看到拍摄设备信息
那么我们将照片上传到 Facebook 之后再下载回来,查看其中的区别。
此时这部分信息从一加手机变成了 Photoshop 3.0;不仅如此,后面还跟上了一串由英文字母和数字组成的序号,这串序号就是被推测用于追踪的识别码。
那么有没有可能 Facebook 在上传照片的时候真的使用了 Photoshop 的部分功能呢?比如压缩图片大小、剪裁画面、增加滤镜,听着都像是和 Photoshop 有关的操作。
如果是这样,那下载回来的图片中真的出现 Photoshop 相关的字样也不是没有可能的。
所以作为对比,我们使用 Photoshop 处理一下锅哥的靓照,再观察描述信息会发生什么变化。
真正使用 Photoshop 编辑的文件,的确会有 Photoshop 版本信息的字样,但不会在其后添加不明意义的序号。
差评君又查看了一下使用另一款图像处理工具「 泼辣修图 」编辑过的图片的十六进制信息,其后也没有出现不明意义的序号。
之后差评君又从 Facebook 上下载了几张图片,查看了一下十六进制编码信息。
火锅:听说你在网上看别的狗?
果然,这张图片对应的十六进制编码信息中也出现奇怪的序号。。
所以这件事情差不多实锤了,Facebook 的确在图片中嵌入了可能用于追踪的代码,而且还妄图把这口锅甩给了 Photoshop。
做了坏事,还想告诉大家这是隔壁小孩做的,啧啧啧。
初步实锤之后,还有一个问题需要验证:这段代码是上传照片时加入的,还是下载照片时加入的?
有人倾向认为 Facebook 添加这段代码的本意是确定文件的最初所有权,在出现文件归属/版权争议的时候可以作为辅助证据使用。
若真相如此,Facebook 只需要在图片上传时加入追踪代码就可以了。
然而差评君对这个说法是不认同的,针对版权归属而做的追踪,早就可以通过向图片添加隐水印的方式实现了。
举个栗子,在火锅这张图片上通过频谱转换添加上了 「 差评吉祥物 」的水印,加上隐水印的火锅图片人眼看上去和原图片区别并不大,但在频谱上确确实实有差评的签名。。
而若要追踪每个下载了这张照片的用户的网络轨迹,则需要在每次下载照片时加入不同的序号,用于区分要追踪的目标。
为了解决这个问题,差评君和同事分别用各自的账号下载了数次火锅的靓照,结果发现有些同事得到的追踪代码是一致的,有些则与其他同事的不一致。。。
然而就在差评君准备第二天召唤更多同事做一波测试,挖掘其中规律的时候……
发现在新下载的图片文件中,追踪代码不见了…… 被媒体爆料之后,Facebook 悄悄把追踪代码都撤掉了!
序号消失,只留下了孤单的「Photoshop 3.0.8BIM」…
好吧,虽然 Facebook 的反应十分迅速,不过想必差友们也和差评君一样,对一家美国「 不知名科技企业 」的日常是不怎么关心的。 差评君更好奇的是,我们常用的几家主流平台会不会给图片嵌入类似的追踪代码呢?
在测试了微信(聊天、朋友圈)、QQ(聊天、空间)、知乎、微博和钉钉之后,差评君发现……
什么都没有,描述信息干净的像小黑胖的钱包。。
其实这件事情也很好理解,国外的聊天工具和论坛大多默认采用发送原图的选项,因此 Facebook 加入的追踪代码多数情况下能够得以保留。
而国内的多数聊天工具默认都会压缩图片,有些论坛甚至没有发送原图的选项,经过压缩图片大小这类二次处理步骤后,原有的描述信息很容易就被抹掉了。。
因此,在国内的网络环境下,通过在描述信息中添加追踪代码就妄图追踪用户的网络活动轨迹,纯属费力不讨好。
其实早在 4 年前,就已经有技术人员发现 Facebook 的追踪代码了,并在程序员社区 Stack Overflow 引发了讨论,但未能引起更多关注。
Facebook 虽然移除了描述信息中的追踪代码,但会不会有「Plan B」呢?
毕竟 AI 早就可以快速识别图片并进行标记。
至于是否真的存在「Plan B」,也只有 Facebook 自己知道了。
参考资料
https://www.forbes.com/sites/zakdoffman/2019/07/14/facebook-is-embedding-hidden-codes-to-track-all-your-uploaded-photos-report/
#facebook is embedding tracking data inside photos you download.
I noticed a structural abnormality when looking at a hex dump of an image file from an unknown origin only to discover it contained what I now understand is an IPTC special instruction. Shocking level of tracking.. pic.twitter.com/WC1u7Zh5gN
— Edin Jusupovic (@oasace) July 11, 2019
https://stackoverflow.com/questions/31120222/iptc-metadata-automatically-added-to-uploaded-images-on-facebook